{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "import pickle"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PCA Explained "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame(\n",
    "    {\n",
    "        'x1': np.random.normal(loc=10.0, scale=5.0, size=8),\n",
    "        'noise': np.random.normal(loc=0.0, scale=1.0, size=8),\n",
    "    }\n",
    ")\n",
    "\n",
    "df['x2'] = 3 * df['x1'] + df['noise'] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x1</th>\n",
       "      <th>x2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6.444733</td>\n",
       "      <td>20.847057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>12.096002</td>\n",
       "      <td>35.828115</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6.253012</td>\n",
       "      <td>19.422884</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>8.824968</td>\n",
       "      <td>24.443817</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6.145925</td>\n",
       "      <td>17.806675</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>16.140159</td>\n",
       "      <td>47.575202</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>4.111923</td>\n",
       "      <td>13.035675</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>9.379237</td>\n",
       "      <td>25.582423</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          x1         x2\n",
       "0   6.444733  20.847057\n",
       "1  12.096002  35.828115\n",
       "2   6.253012  19.422884\n",
       "3   8.824968  24.443817\n",
       "4   6.145925  17.806675\n",
       "5  16.140159  47.575202\n",
       "6   4.111923  13.035675\n",
       "7   9.379237  25.582423"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[['x1', 'x2']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:8: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n",
      "  \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 1, figsize=(8, 5))\n",
    "\n",
    "df.plot(\n",
    "    title='2-D Data [x2 ~= 3 * x1]',\n",
    "    kind='scatter', x='x1', y='x2', ax=ax, color='k', s=50\n",
    ")\n",
    "\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ -5.19112052],\n",
       "       [ 10.81495107],\n",
       "       [ -6.59926439],\n",
       "       [ -1.01215765],\n",
       "       [ -8.16099863],\n",
       "       [ 23.23863041],\n",
       "       [-13.33536335],\n",
       "       [  0.24532306]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.decomposition import PCA\n",
    "\n",
    "scaler = StandardScaler(with_std=False)\n",
    "\n",
    "x = scaler.fit_transform(df[['x1', 'x2']])\n",
    "# x = df[['x1', 'x2']]\n",
    "\n",
    "pca = PCA(n_components=1)\n",
    "\n",
    "pca.fit_transform(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([139.00194195])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.explained_variance_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.32841267, 0.94453434]])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.components_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:17: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 1, figsize=(8, 5))\n",
    "\n",
    "df.plot(\n",
    "    title='2-D Data [x2 ~= 3 * x1]',\n",
    "    kind='scatter', x='x1', y='x2', ax=ax, color='k', s=50\n",
    ")\n",
    "\n",
    "c1_slope = pca.components_[0][1] / pca.components_[0][0]\n",
    "c1 = np.array([\n",
    "    [x1, x1 * c1_slope]\n",
    "    for x1 in df['x1'].values\n",
    "])\n",
    "ax.plot(c1[:,0], c1[:,1], '-k', alpha=0.25, label='Principal Component 1')\n",
    "\n",
    "ax.legend()\n",
    "\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_digits\n",
    "\n",
    "digits = load_digits()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 16.0)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "digits['data'].min(), digits['data'].max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def display_img(img, target, ax):\n",
    "    img = img.reshape((8, 8))\n",
    "    \n",
    "    ax.imshow(img, cmap='gray',)\n",
    "    ax.set_title(f'Digit: {str(target)}')\n",
    "    ax.grid(False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "x, y = digits['data'], digits['target']\n",
    "\n",
    "x_train, x_test, y_train, y_test = train_test_split(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((1347, 64), (450, 64), (1347,), (450,))"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.shape, x_test.shape, y_train.shape, y_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:52: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import sys\n",
    "import pickle\n",
    "import warnings\n",
    "\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "sizes = []\n",
    "\n",
    "fig, axs = plt.subplots(1, 2, figsize=(15, 5))\n",
    "\n",
    "for i in [2, 4, 8, 16, 32, 64]:\n",
    "    \n",
    "    clf = LogisticRegression()\n",
    "    with warnings.catch_warnings(record=True) as w:\n",
    "        clf.fit(x_train[:,:i], y_train)\n",
    "    sizes.append(\n",
    "        [i, sys.getsizeof(pickle.dumps(clf))]\n",
    "    )\n",
    "    \n",
    "pd.DataFrame(\n",
    "    sizes,\n",
    "    columns=['# Features', 'Memory Footprint']\n",
    ").set_index('# Features')['Memory Footprint'].plot(\n",
    "    title='LogisticRegression: Memory Footprint vs # Features',\n",
    "    kind='bar',\n",
    "    color='k',\n",
    "    ax=axs[0]\n",
    ")\n",
    "\n",
    "\n",
    "sizes = []\n",
    "\n",
    "for i in [25, 75, 150, 300, 600, 1200]:\n",
    "    \n",
    "    clf = LogisticRegression()\n",
    "    with warnings.catch_warnings(record=True) as w:\n",
    "        clf.fit(x_train[:i,:], y_train[:i])\n",
    "    sizes.append(\n",
    "        [i, sys.getsizeof(pickle.dumps(clf))]\n",
    "    )\n",
    "    \n",
    "pd.DataFrame(\n",
    "    sizes,\n",
    "    columns=['# Samples', 'Memory Footprint']\n",
    ").set_index('# Samples')['Memory Footprint'].plot(\n",
    "    title='LogisticRegression: Memory Footprint vs # Samples',\n",
    "    kind='bar',\n",
    "    color='k',\n",
    "    ax=axs[1]\n",
    ")\n",
    "\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:49: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import sys\n",
    "import pickle\n",
    "\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "sizes = []\n",
    "\n",
    "fig, axs = plt.subplots(1, 2, figsize=(15, 5))\n",
    "\n",
    "for i in [2, 4, 8, 16, 32, 64]:\n",
    "    \n",
    "    clf = KNeighborsClassifier()\n",
    "    clf.fit(x_train[:,:i], y_train)\n",
    "    sizes.append(\n",
    "        [i, sys.getsizeof(pickle.dumps(clf))]\n",
    "    )\n",
    "    \n",
    "pd.DataFrame(\n",
    "    sizes,\n",
    "    columns=['# Features', 'Memory Footprint']\n",
    ").set_index('# Features')['Memory Footprint'].plot(\n",
    "    title='KNeighborsClassifier: Memory Footprint vs # Features',\n",
    "    kind='bar',\n",
    "    color='k',\n",
    "    ax=axs[0]\n",
    ")\n",
    "\n",
    "\n",
    "sizes = []\n",
    "\n",
    "for i in [25, 75, 150, 300, 600, 1200]:\n",
    "    \n",
    "    clf = KNeighborsClassifier()\n",
    "    clf.fit(x_train[:i,:], y_train[:i])\n",
    "    sizes.append(\n",
    "        [i, sys.getsizeof(pickle.dumps(clf))]\n",
    "    )\n",
    "    \n",
    "pd.DataFrame(\n",
    "    sizes,\n",
    "    columns=['# Samples', 'Memory Footprint']\n",
    ").set_index('# Samples')['Memory Footprint'].plot(\n",
    "    title='KNeighborsClassifier: Memory Footprint vs # Samples',\n",
    "    kind='bar',\n",
    "    color='k',\n",
    "    ax=axs[1]\n",
    ")\n",
    "\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MNIST test accuracy score: 98.9% [k=5, metric=euclidean, memory footprint=785214]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "parameters = {'metric':('manhattan','euclidean', 'cosine'), 'n_neighbors': range(3, 15)}\n",
    "\n",
    "knn = KNeighborsClassifier()\n",
    "clf = GridSearchCV(knn, param_grid=parameters, scoring='accuracy', cv=5)\n",
    "\n",
    "clf.fit(x_train, y_train)\n",
    "\n",
    "y_test_pred = clf.predict(x_test)\n",
    "\n",
    "print(\n",
    "    'MNIST test accuracy score: {:.1%} [k={}, metric={}, memory footprint={}]'.format(\n",
    "        accuracy_score(y_test, y_test_pred), \n",
    "        clf.best_params_['n_neighbors'], \n",
    "        clf.best_params_['metric'], \n",
    "        sys.getsizeof(pickle.dumps(clf))\n",
    "    )\n",
    "\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:34: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.random_projection import SparseRandomProjection\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.neighbors import NeighborhoodComponentsAnalysis\n",
    "\n",
    "fig, axs = plt.subplots(1, 3, figsize=(15, 5))\n",
    "\n",
    "methods = {\n",
    "    'Rand': SparseRandomProjection(n_components=2),\n",
    "    'PCA': PCA(n_components=2),\n",
    "    'NCA': NeighborhoodComponentsAnalysis(n_components=2, init='random'),\n",
    "\n",
    "}\n",
    "\n",
    "for i, (method_name, method_obj) in enumerate(methods.items()):\n",
    " \n",
    "    scaler = StandardScaler(with_std=False)\n",
    "    x_train_scaled = scaler.fit_transform(x_train)\n",
    " \n",
    "    method_obj.fit(x_train_scaled, y_train)\n",
    "    x_train_2d = method_obj.transform(x_train_scaled)\n",
    " \n",
    "    for target in set(y_train):\n",
    "        pd.DataFrame(\n",
    "            x_train_2d[\n",
    "                y_train == target\n",
    "            ], columns=['y', 'x']\n",
    "        ).sample(n=20).plot(\n",
    "            kind='scatter', x='x', y='y', \n",
    "            marker=f'${target}$', s=64, ax=axs[i]\n",
    "        )\n",
    "        axs[i].set_title(f'{method_name} MNIST')\n",
    "\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:44: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n"
     ]
    },
    {
     "data": {
      "image/png": "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VlbGrbfeSm1tLd26dePgwYMMHTrUqph1rQe9evXSLyC8/PLLrFq1qtlxrVmBuUpPavTo0QwYMIDp06ezaNEi1q1bhyzL+gUKgWciknEHMXr0aEaPHq3/fdasWS3EwDoyhtev0WgYOHAgQUFBrF+/ntraWov6aAztLerr65k/fz79+vXjtttuc1icsixTXl7OoEGDkCSJiIgIunXrxsWLFy0+h7k4Ha2crBOqu+aaa/RCdYMHD+bkyZOEh4dz11132Xzu4uJiJk6cSFhYGLfeeitz585tkZQbagDs37/f5Hm8vLzo1atXC19QR1phCDo3J06cMOv57Up07gbdunVziruBQCBwLJIkvQHcA2iAbOBRWZYrrz73IjADaASSZVn+t73jGVaKrV69msrKSp588knWrVvH8uXL7T29y9AlwMnJyTQ2NhIWFsajjz7KqFGjmomqTZ06FS8vr2aiam1hrcbM2LFj8fX1ZevWrahUKh566CH++te/EhYWxnfffceQIUP01ahRUVF6FXOdW0x9fT3ffvstsiwjyzJTpkyx+v3QLSAkJycTFxfXbAHBEiswV+pJGbeM6uaOAs9GJONOQteHbA2erMJpjbKyr68vERERXL58mS1btpCamtqsj8bcdRraW8AVoSRHKxLX19ej1Wrx8/NrFq81O7m2xGnLv61OqK66ulp//m+++YaKiopmis7WYmzNtGvXLmJiYpr11xt/oZtLxgGWLFnCpk2byM7OJiAggLlz5zJp0iT9867okxJ0XFrz/HYlOncDLy8vKisrHe5uIBAIHM4+4MWrrjyvAy8CCyRJGsAVm9xfAdHA15Ik9ZNludGewTpKpZguATYUudVp/hj2lI8aNQq1Mtaz5gAAIABJREFUWs3u3bstVlm3pXJg5MiRxMTEEB8fz0svvURISAgjRozgl19+MVuN2tDQoG/tmzJlCt988w2HDh1qYdOVkpLCnj17uHz5MkqlknvvvZfhw4c3O0a3gPCXv/yFpqamZgsIbVmBuVpPStcyqluk6NatG7IsO7xnvKGhgY8//pj09HSH60J1RkQy7iRsSTrMqXB6gk2atcrK27dvZ+XKlXz22WeEhYU166NpTW3UlIJxVlaWw65DoVDg4+OjF4aCK4lySEiIxecwZ8PRGrYorOqE6gzVM//v//4PPz8/lixZYtX4hhhbMyUmJnLs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\n",
      "text/plain": [
       "<Figure size 1080x360 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "from sklearn.random_projection import SparseRandomProjection\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.neighbors import NeighborhoodComponentsAnalysis\n",
    "\n",
    "methods = {\n",
    "    'Rand': SparseRandomProjection(n_components=2),\n",
    "    'PCA': PCA(n_components=2),\n",
    "    'NCA': NeighborhoodComponentsAnalysis(n_components=2, init='random'),\n",
    "\n",
    "}\n",
    "\n",
    "fig, axs = plt.subplots(1, 3, figsize=(15, 5))\n",
    "\n",
    "for i, (method_name, method_obj) in enumerate(methods.items()):\n",
    "    \n",
    "    scaler = StandardScaler(with_std=False)\n",
    "    x_train_scaled = scaler.fit_transform(x_train)\n",
    "    \n",
    "    method_obj.fit(x_train_scaled, y_train)\n",
    "    x_train_2d = method_obj.transform(x_train_scaled)\n",
    "    \n",
    "    # print(f'Calculating {method_name} ..')\n",
    "    \n",
    "    for target in set(y_train):\n",
    "        pd.DataFrame(\n",
    "            x_train_2d[\n",
    "                y_train == target\n",
    "            ],\n",
    "            columns=['y', 'x']\n",
    "        ).sample(n=20).plot(\n",
    "            kind='scatter',\n",
    "            x='x',\n",
    "            y='y',\n",
    "            marker=f'${target}$',\n",
    "            s=64,\n",
    "            color='k',\n",
    "            alpha='0.75',\n",
    "            ax=axs[i],\n",
    "        )\n",
    "        axs[i].set_title(f'{method_name} MNIST')\n",
    "\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MNIST test accuracy score: 69.6% [k=8, metric=manhattan, memory footprint=163671 - Rand]\n",
      "MNIST test accuracy score: 94.0% [k=4, metric=euclidean, memory footprint=98957 - PCA]\n",
      "MNIST test accuracy score: 94.2% [k=4, metric=euclidean, memory footprint=98957 - NCA]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "from sklearn.random_projection import SparseRandomProjection\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.decomposition import KernelPCA\n",
    "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n",
    "from sklearn.neighbors import NeighborhoodComponentsAnalysis\n",
    "from sklearn.manifold import LocallyLinearEmbedding\n",
    "\n",
    "from sklearn.manifold import MDS\n",
    "\n",
    "n_components = 6\n",
    "\n",
    "methods = {\n",
    "    'Rand': SparseRandomProjection(n_components=n_components),\n",
    "    'PCA': PCA(n_components=n_components),\n",
    "    'NCA': NeighborhoodComponentsAnalysis(n_components=n_components, init='pca',),\n",
    "}\n",
    "\n",
    "for i, (method_name, method_obj) in enumerate(methods.items()):\n",
    "    \n",
    "    scaler = StandardScaler(with_std=False)\n",
    "\n",
    "    x_train_scaled = scaler.fit_transform(x_train)\n",
    "    x_test_scaled = scaler.fit_transform(x_test)\n",
    "    \n",
    "    method_obj.fit(x_train_scaled, y_train)\n",
    "    x_train_2d = method_obj.transform(x_train_scaled)\n",
    "    x_test_2d = method_obj.transform(x_test_scaled)\n",
    "\n",
    "    scaler = MinMaxScaler()\n",
    "\n",
    "    x_train_scaled = scaler.fit_transform(x_train_2d)\n",
    "    x_test_scaled = scaler.transform(x_test_2d)\n",
    "\n",
    "    parameters = {'metric':('manhattan','euclidean'), 'n_neighbors': range(3, 9)}\n",
    "\n",
    "    knn = KNeighborsClassifier()\n",
    "    clf = GridSearchCV(knn, param_grid=parameters, scoring='accuracy', cv=5)\n",
    "\n",
    "    clf.fit(x_train_scaled, y_train)\n",
    "\n",
    "    y_test_pred = clf.predict(x_test_scaled)\n",
    "    \n",
    "    print(\n",
    "        'MNIST test accuracy score: {:.1%} [k={}, metric={}, memory footprint={} - {}]'.format(\n",
    "            accuracy_score(y_test, y_test_pred), \n",
    "            clf.best_params_['n_neighbors'], \n",
    "            clf.best_params_['metric'], \n",
    "            sys.getsizeof(pickle.dumps(clf)),\n",
    "            method_name\n",
    "        )\n",
    "\n",
    "    )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Nearest Centroid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MNIST test accuracy score: 90.9%\n"
     ]
    }
   ],
   "source": [
    "from sklearn.neighbors import NearestCentroid\n",
    "\n",
    "clf = NearestCentroid()\n",
    "\n",
    "clf.fit(x_train, y_train)\n",
    "\n",
    "y_test_pred = clf.predict(x_test)\n",
    "\n",
    "print(\n",
    "    'MNIST test accuracy score: {:.1%}'.format(\n",
    "        accuracy_score(y_test, y_test_pred), \n",
    "    )\n",
    "\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:6: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n",
      "  \n"
     ]
    },
    {
     "data": {
      "image/png": "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u86V8/6MTJ482ZXbsmWLK1dp5erfe3mvq6++2pV7//33XTnvuswRRxzhyh100EGunOfyPu0pV/cDBw505W6//XZXzvt75LXXXnPlrr32Wlfuueeec+Xq68szZi1X/8OGDXPlbrvtNlduzpw5rpx3nOe9pNPMmTNdOc+lldrCCbQAAAAAAIXDYBgAAAAAUDgMhgEAAAAAhcNgGAAAAABQOAyGAQAAAACFw2AYAAAAAFA4DIYBAAAAAIXDYBgAAAAAUDgMhgEAAAAAhdOtkhM7/fTTXbkjjjjClfva177mys2YMcOVmzJliit38sknu3IvvPCCK1cpvXv3duVOOeUUV27w4MGuXENDgyu3bt06V27r1q2uXJ5s2rTJlbvvvvtcudmzZ7tyt912mytXU1PjynXt2tWVy5vFixe7cuPHj3flPvzwQ1fu/vvvd+Xmzp3ryq1evdqVy5Pa2lpX7pZbbnHllixZ4srNnDnTlfvCF77gyq1YscKVe/HFF125Shk4cKArt23bNlfOu4yaNm2aK7dq1SpXrrGx0ZXLk169erlyV111lSv36KOPunKPPPKIK+ddjlWrlpYWV+7hhx925d566y1X7uKLL3blxowZ48rNnz/flcvTz0jfvn1duY0bN7pyc+bMceXMzJUbMmSIK7djxw5XLm8OPfRQV877M/L888+7csOHD3flRo8e7cr16NHDlfO+j71hzzAAAAAAoHAYDAMAAAAACofBMAAAAACgcBgMAwAAAAAKh8EwAAAAAKBwGAwDAAAAAAqHwTAAAAAAoHAYDAMAAAAACofBMAAAAACgcLpVcmKDBg1y5VasWOHKzZgxw5VbvHixKzdnzhxX7rOf/awr98ILL7hyldKvXz9XbsiQIa7c9u3bD2R2drN27dqQ6VbCH/7wB1du7ty5rtyIESNcuR49erhyq1atcuWam5tdubxZsmSJK9fQ0ODKffe733Xlhg0b5srdc889rlxjY6MrlyfnnnuuKzd69GhX7uabb3blTjjhBFfu1FNPdeV+97vfuXLTpk1z5SolpeTKmZkrN378eFdu5MiRrtwTTzzhynmXoU1NTa5cJRx55JGuXN++fV251atXu3LedZRly5a5ckuXLnXlWlpaXLlK8f6+2rp1qyv3xS9+0ZX76le/6srV1NS4cgMGDHDlvD/rleBdj/eud19zzTWuXLduvmHNxIkTXbnly5e7cnnj7X/+/PmunPf3bl1dnSvn/dns2bOnK3eg2DMMAAAAACgcBsMAAAAAgMJhMAwAAAAAKBwGwwAAAACAwmEwDAAAAAAoHAbDAAAAAIDCYTAMAAAAACgcBsMAAAAAgMJhMAwAAAAAKJxulZxYjx49XLn333/flVu3bp0r19LSUtac933kzYYNG1y5efPmuXL19fWu3ODBg125zZs3u3LVqKGhwZXr1s33I3n++ee7cqtWrXLlFixY4Mo1Nze7cnnT1NTkym3ZssWVmzVrlis3YsQIV27cuHGu3KuvvurKeX82K+Gcc85x5bp08W2bPfvss125kSNHunK1tbWu3K9//WtXLm9eeuklV+7uu+925Q477DBXrqamxpU744wzXDnv76Vly5a5cpXQv39/V65v376u3MUXX+zKjRo1ypXzrmvdeuutrtybb77pylXKIYcc4sp5e73wwgtduQEDBrhyL7/8siu3detWVy5PNm3a5Mp51+O930vvdF9//XVXrrGx0ZXLm6VLl7py3/nOd1y5oUOHunLe3+Pf/va3Xbk+ffq4cgeKPcMAAAAAgMJhMAwAAAAAKBwGwwAAAACAwmEwDAAAAAAoHAbDAAAAAIDCYTAMAAAAACgcBsMAAAAAgMJhMAwAAAAAKBwGwwAAAACAwulWyYm9/fbbrtwxxxzjyh1yyCGuXG1trSs3YsQIV27mzJmuXN589NFHrtyaNWtcuVWrVrlyAwYMcOW6davox7Giunfv7sqNHj3alTvjjDNcuaefftqV2759uytXV1fnym3cuNGVqxRv/zU1Na7cY4895sqtXr3alfve977nyo0aNcqVq6+vd+XKwczafHzevHmu13n++edducGDB7ty3uXOlClTXDnv/OXNihUrXLmJEye6cieddJIrd9FFF7lyvXr1cuW8P8N54u1+x44drtyf/vQnV27SpEmu3NixY125b37zm67cN77xDVeuUpqamly56dOnu3LDhw935RYuXOjK3XHHHa7c7NmzXbk88a4reJcTP/7xj1057/r+pZde6srNmjXLlfOuN1dKSsmVW7BgQVlzxx13nCu3ZMkSV65Pnz6u3IFizzAAAAAAoHBcu+LMbKmkDyXtkNScUhrZkTOFj6P/OHQfi/7j0H0s+o9D97HoPw7dx6L/GPtyXOpfp5TWddicoD30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\n",
      "text/plain": [
       "<Figure size 1080x360 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots(1, len(clf.classes_), figsize=(15, 5))\n",
    "\n",
    "for i, (centroid, label) in enumerate(zip(clf.centroids_, clf.classes_)):\n",
    "    display_img(centroid, label, axs[i])\n",
    "    \n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:40: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA80AAAFQCAYAAACF0ZxBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3debgkZXk3/u8NiBtxRiGICoLRccEloChuPyVBIy4BfaNxiVGMEpM3otHkNRqNIu4mcYniEhdUjIKaRFFRcd8im6LsOMgiuCAiMxFREXh+f1QdaZupM2dmTk3PzPl8rquvU13bt6q6zzl191P1dLXWAgAAAFzXVrPeAAAAANhUKZoBAABggKIZAAAABiiaAQAAYICiGQAAAAYomgEAAGCAohkAAAAGKJoBloCqendVtf5xVVVdUFVvrartp+a7T1X9d1VdXFW/rKrvVtX7qurua1jnP1TV1VX1z4uwfXv36zpxQ9fFwvSv8T374S9X1RMWuNydq+qIqvp+Vf2qfy/9d1X9wbhbvHmqqhdW1fmz3g4A1p+iGWDp+EqSWyTZLckzk/xJkvfOTayqp/TzXJnkz5LcKcljk5yf5A2TK6qqSnJQklckeXJVbbuB2/b0JG9Jctuq2mMD17UoFmGfNllVdbskN05ycr+f90zytQUs95AkJyW5ZZKnJdk9yR8nOS7J20bbYACYIUUzwNJxZWvtR621i1prH03y+iT7VdUNq+qW6YrWd7TWHtta+2xr7bzW2kmttRcm2X9qXfsm2S7JS5L8JMmj1nejqmpZuuL8bUmOSldAT8+zXVW9vqou7Fs3z6+qf5yYvmNVHT7RQn52Vf1FP22fvoV956l1XlVVB/bDu/Xz/FlVHVNVP0/y0uq8vW9x/0VVnVtVr6iq60+t60FV9ZWquqKqVlfVl6rqtn321VW1y9T8T+rnu/Ea9nVFvy33nRq/dz9+Rf/8aVV1Zr+/P+1bi3eeXt+A+yU5vrV2VbqC+dLW2gXzLVBVN0r3IcsXW2v7ttY+2Vr7bmvtlNbaq5PsPTHvLarqyKpa1R+3L1bVXhPT516Th1XV1/t5vtG3Yt+5qr7aH8sTqmr3ieUO7F+3B1XV6f2+Hz/9QUu/3m/075UfV9WbJ491dVdefLaq/rJvKf/fqjq6qm4+tZ4HV9XX+u37fv8e236h6+nfXy9Nsmtde6XHIf20A6rq5H4/V/X7uucCXz8ANiJFM8DS9Yt0/we2SfKnSa6f5GVrmrG1dtnUqKcn+Y++6HpP1lzonl9V717AdjwxyVmttVOTvDvJn00VOJXk4+kK94PTtYA/Kckl/fQbJvlSkt9P10K+ez/fFQvInvbqJP+R5C5J3pqkkvw4yRP63L9N8pQkkwX7g5J8Osk3ktwnXfH43iTXa619McnKJH8xlXNQkve31n4+vQGttZVJvp7kz6cmPTnJ11trK6vqHv32vTLJHZI8MBNXDQzpi7NV/bL374ePTbLTxLQhf5RkxyQvX9PEufdI/3p9JMkdkzwiyb2SXJzkM1W1w9RiL0/ygiT3SHeFwwfSfXjz4olxh08ts1WS1yT5v/26L0nyif59kKq6W5Kjk3w53Xviyf12vHVqPfdM8gdJHp7kIUnumuRf5iZW1R8m+WiSI5PcLckj012l8V/9Pi5kPUele09dlO4qj1sk+Zeq2inJh/r9vXO6983rk1wVADY9rTUPDw8Pjy38ka4Y/ezE892TfDfJcf3zNydZvcB17ZiumLlr//xW6U72V0zN97kkr1zA+r6V5OCJ52cledrE832TtCR7DSz/1CS/TLLzwPR9+uV3nhp/VZID++Hd+nn+aQHb++wkKyeefyXJx+eZ/zlJLkiyVf/8jn3WnvMs81dJfppk2/75tkkuTfL0/vmjkqxOcpN1fB/s1j9+lOT/9MPHJXnW3LR5ln1uv903W0vG3Ou1+8S46yf5YZIXTb0mj5yY5zH9uD+ZGPeoftx2/fMD++f7Tsxz0ySXJ3lq//yIJCdMbdMBSa5JsuvE78OPk1x/Yp5/SPLDiedfTPKqqfXcus/fYx3W88Ik50+tZ89+PYPH28PDw8Nj03loaQZYOvapqsur6hdJTktybroW1KRrUV2opyQ5tXUtw2mtfT9dgfyXkzO17hLe58+3oqraO10L7vsnRk+3XN8jyWWttZMGVnOPJGe01i5ah30YcsIatvGg/hLgi6vq8nStu7tO5R87zzrfk+6Dhof0z5+W5ButtZPnWeaoJDdK10Ka/ueN+/FJ8pl0r995/WXQf7mGVtzraK2dn+QmSa6XrhX10iR7JPlAa+38fvqQhb5H7pzucu8zJnJ/leT4ftqkb08M/6j/ecoaxu04tdzXJ9Z9WZIzJ9Z953StzJO+1G//7hPjzuq3a84Pkkxenn3PJH/b/85c3r/2c/u0Yh3WsyanpLs64bTqOlF71vQl/ABsOhTNAEvH8ekKpDsluUFr7cGttXP7aWcnucna7ontL0s9KMme/b2lV1XVVUkenPXrEOzp6VpRL55Y18uS7DV9n+oGuGZu8+dGVNXWWfP/wN+6XLqqHpPksHTF6sPStRAemq7oXJDW2qVJPpzkoP74PCnJv69lmcuSfKyfN/3Po1trq/rplyfZK11L7HfStUyf01+2vUb9PcCXp/tgYHm6luqL07UCn9sXhreeZ7PO7n/uPs886+rXE8NtnnFjnK9cOfW85bc/GNgq3aXVe0w9ViT55Dqs5zpaa1cneWiSP0xyYrpO+b5TVY+YbzkAZkPRDLB0/KK1dk7fojh9ov+hJL9KdynpdVTVTfvBfdNdxnu//HYhsWeSG2YdOgSrazsA+5updf1+upbCudbmbyS56WRHUlO+kWT3eQr+H/c/bzkxbo8srOX0AUlObq29trX2jdbdb7zbGvL/aC3reVu6Xqafnu44fWAB2e9J8rCqukO6gv237llurV3dWvtya+1F6Vq7f5hrrxxYk4el2+8TkvxTP/zhJO/Mtcf+B/Msf2y6Y/mCNU2ceI+cnmT7qQ68rp/uXu/T5ln/urj3xLqXp/sgaK4V+PR0r9ukB6YrZk9fh4yTkty5/52Zfly+Duu5MsnW0yNb54TW2itaaw9I1xr+lHVYLwAbiaIZgLlLrJ+RrjX0yKrat7oepe9eVS9Jdylv0hV9X2qtfb21dtrE49vpWkZ/c1l1VX2uql45T+wT07UCHz61rtPSdcY11yHY59PdN3xU3+PwbarqflX1tH49H0h3z/DRfa/Kt+m3/7H99HP66YdU1R2r6v5JXpdrWzHnc3aSu/a5t62qZ6W7F3jSS5M8tLreve9WVXeorpfnO0wc36/26/qXJEe21n62gOxPJbksXUdUl/XPk/ym5+VnV9U9+tbhRybZJdcWjtfRut6xz0vXqdV/t9bOSdfh2ccnisHBjqhaa1eku6f4D/oeox9aVb9XVXetqr9Pd2900r1eJyR5f/863SVdwX+DdJ18baiW5DVV9YCqumu/7p/l2kv8/znJ3avqdf3rvV+SN6bruO5765DzoiQHVNVrq2qP/vXfr6reOdfp2AKdl66jtftU1Q5VdaOqum9V/VN1PaLfuqr2Tfe6DL5+AMyOohmAJElr7R3pWuRukK4QPTtdS+RtkjyzqnZM16HSBwdWcVS6+6bn7ve8bbregocclK5g+8Uapv1XuhbZx7fWWrqeiY9J1wPy2Unel2SHfruv6Lf7tHQF5pnpLqm+YT/9qnQt2jsmObmf9oJce9n2fN6WrmOpw/tl905yyOQMrbVj07Xi7p3uEvgT0vXYPHmZcZK8Pd2l6PNemj2x3qvSFYJ7pOtpe7KgvSxdy/Wn0l2e/ZokL2utvXMtq90z3VePndm39N81173/d75t+mS6e30vTtdCfVaSTyS5b7rXM/3r9ciJaScm2SnJg1trP1lo1jyuSdd7+dvStQbvlOTh/fsgrbVT0vW0/oB090wf0W/HX61LSGvtC+kun75bug9tTkn3YcvPct3Xdj4fSXclxyfS9fT93HSXxt8n3YdRK5O8K90HRS9dl20EYOOo7n8bADCmqnpNusLRd/Gup+q+9/gdrbVtZr0tACwd/ukAwIj6Ft3bp+td/Jkz3hwAYB25PBsAxvXRdJdA/3e6y8oBgM2Iy7MBAABggJZmAAAAGLDR7mlevXq1Jm0AAAA2WcuWLavpcVqaAQAAYICiGQAAAAZsFkXzypUrl0zuUsmcVe5SyZxVrn3d8jJnlbtUMmeVu1QyZ5VrX7e8zFnlLpXMWeUulcxZ5W5JmZtF0QwAAACzoGgGAACAAYpmAAAAGKBoBgAAgAGKZgAAABigaAYAAIABimYAAAAYoGgGAACAAYpmAAAAGKBoBgAAgAHbzHoDAABg0vLly9d72VWrVm02mRuSO4vMDcl1fMfNdXzHzVU0AzATS+UfLWzuZvG7CrApUTQDLHEKSVh3PvQBWDoUzQADnBSzGFwyN26u3xkAxqZoBjZ5TooBAJgVRTOwTtzbBgDAUuIrpwAAAGCAohkAAAAGKJoBAABggKIZAAAABiiaAQAAYICiGQAAAAYomgEAAGCAohkAAAAGKJoBAABggKIZAAAABmwz6w0A1s/y5cvXe9lVq1Yt4pYAAMCWS0szAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAM0Hs2LAI9WQMAwJZJSzMAAAAM0NLMFmd9W321+AIAANO0NAMAAMAALc2Mxn2+AADA5m5BLc1VtV9VnV1V51TV89Yw/dZV9YWqOrmqTqmqhy3+pgIAAMDGtdaiuaq2TnJYkocm2T3J46tq96nZXpjkg621PZM8LsmbF3tDAQAAYGNbSEvzvZKc01o7t7V2ZZIjkxwwNU9LcpN+eFmSHyzeJgIAAMBsLOSe5lsluXDi+UVJ9p6a55Akx1bVwUlunORBi7J1AAAAMEOL1RHY45O8u7X2r1V1nyRHVNVdWmvXrGnmlStXrnPA+iyzGGaRu1Qy57OUjsFS2VfHd8vMXSqZs8pdKpmzyl0qmbPKta9bXuascpdK5qxyl0rmfLkrVqyYd7lqrc0/Q1cEH9Jae0j//PlJ0lp75cQ8pyfZr7V2Yf/83CT3bq39eG6e1atXzx80j5UrV651R8Ywi9wtKXNWvWfP4nuaZ7Gvju+mm7u57avjO26u4zturuO76eZubvvq+I6b6/iOm+v4Ll7usmXLanrcQu5pPjHJiqq6TVVtm66jr6On5vlekn2TpKrulOQGSS5ZwLoBAABgk7XWorm1dlWSZyT5dJIz0/WSfXpVHVpV+/ez/V2Sg6rq20k+kOTAtrYmbAAAANjELeie5tbaMUmOmRr3oonhM5Lcb3E3DQAAAGZrIZdnAwAAwJKkaAYAAIABimYAAAAYsFjf08wmblbd0AMAAGzOtDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAgG1mvQFL0fLly9druVWrVi3ylgAAADAfLc0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAMUzQAAADBA0QwAAAADFM0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAMUzQAAADBA0QwAAAADFM0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAMUzQAAADBA0QwAAAADFlQ0V9V+VXV2VZ1TVc8bmOdPq+qMqjq9qt6/uJsJAAAAG982a5uhqrZOcliSBye5KMmJVXV0a+2MiXlWJHl+kvu11i6rqh3H2mAAAADYWNZaNCe5V5JzWmvnJklVHZnkgCRnTMxzUJLDWmuXJUlr7ceLvaFjWL58+Xovu2rVqkXcEgAAADZFC7k8+1ZJLpx4flE/btLtk9y+qr5WVcdV1X6LtYEAAAAwKwtpaV7oelYk2SfJzkm+XFV3ba2tsTl25cqV6xywPsuMaRbbM6tjsFT21fHd8jJnlWtft7zMWeUulcxZ5S6VzFnl2tctL3NWuUslc1a5SyVzvtwVK1bMu9xCiubvJ9ll4vnO/bhJFyU5vrX26yTnVdV30hXRJ67PRk1buXLlOi8ztllsz6yOwVLZV8d3y8ucVa593fIyZ5W7VDJnlbtUMmeVa1+3vMxZ5S6VzFnlLpXMDcldyOXZJyZZUVW3qaptkzwuydFT83wkXStzqmqHdJdrn7teWwQAAACbiLUWza21q5I8I8mnk5yZ5IOttdOr6tCq2r+f7dNJLq2qM5J8Icn/a61dOtZGAwAAwMawoHuaW2vHJDlmatyLJoZbkuf0DwAAANgiLOTybAAAAFiSFM0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAMUzQAAADBA0QwAAAADFM0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAMUzQAAADBA0QwAAAADFM0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAMUzQAAADBA0QwAAAADFM0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAMUzQAAADBA0QwAAAADFM0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAMUzQAAADBA0QwAAAADFM0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAMUzQAAADBA0QwAAAADFM0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAMUzQAAADBA0QwAAAADFM0AAAAwQNEMAAAAAxTNAAAAMEDRDAAAAAO2mfUGzFm+fPl6L7tq1apF3BIAAADoLKiluar2q6qzq+qcqnrePPP9SVW1qtpr8TYRAAAAZmOtRXNVbZ3ksCQPTbJ7ksdX1e5rmO93kjwryfGLvZEAAAAwCwtpab5XknNaa+e21q5McmSSA9Yw30uTvDrJLxdx+wAAAGBmFlI03yrJhRPPL+rH/UZV3T3JLq21TyzitgEAAMBMbXBHYFW1VZLXJjlwocusXLlyQ2NHXZ/M2eculcxZ5S6VzFnl2tctL3NWuUslc1a5SyVzVrn2dcvLnFXuUsmcVe5SyZwvd8WKFfMuV621+Weouk+SQ1prD+mfPz9JWmuv7J8vS/LdJJf3i+yU5KdJ9m+tnTS3ntWrV88bNIves2fVY/f65s4ic0NyHd9xcx3fTTd3c9tXx3fcXMd33FzHd9PN3dz21fEdN9fxHTfX8V283GXLltX0uIVcnn1ikhVVdZuq2jbJ45IcPTextba6tbZDa2231tpuSY7LVMEMAAAAm6O1Fs2ttauSPCPJp5OcmeSDrbXTq+rQqtp/7A0EAACAWVnQPc2ttWOSHDM17kUD8+6z4ZsFAAAAs7eQy7MBAABgSVI0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAAEUzAAAADFA0AwAAwABFMwAAAAxQNAMAAMAARTMAAAAMUDQDAADAgAUVzVW1X1WdXVXnVNXz1jD9OVV1RlWdUlWfq6pdF39TAQAAYONaa9FcVVsnOSzJQ5PsnuTxVbX71GwnJ9mrtXa3JB9O8prF3lAAAADY2BbS0nyvJOe01s5trV2Z5MgkB0zO0Fr7Qmvtiv7pcUl2XtzNBAAAgI1vIUXzrZJcOPH8on7ckKcm+eSGbBQAAABsCrZZzJVV1ROT7JXkgfPNt3LlysWMXfT1yZx97lLJnFXuUsmcVa593fIyZ5W7VDJnlbtUMmeVa1+3vMxZ5S6VzFnlLpXM+XJXrFgx73LVWpt/hqr7JDmktfaQ/vnzk6S19sqp+R6U5I1JHtha+/H0elavXj1v0PLly+fdjvmsWrVqvZabReaG5M4ic0NyHd9xcx3fTTd3c9tXx3fcXMd33FzHd9PN3dz21fEdN9fxHTfX8V283GXLltX0uIVcnn1ikhVVdZuq2jbJ45IcPTlDVe2Z5G1J9l9TwQwAAACbo7UWza21q5I8I8mnk5yZ5IOttdOr6tCq2r+f7Z+TbJfkQ1X1rao6emB1AAAAsNlY0D3NrbVjkhwzNe5FE8MPWuTtAgAAgJlbyOXZAAAAsCQpmgEAAGCAohkAAAAGKJoBAABggKIZAAAABiiaAQAAYICiGQAAAAYomgEAAGCAohkAAAAGKJoBAABggKIZAAAABiiaAQAAYICiGQAAAAYomgEAAGCAohkAAAAGKJoBAABggKIZAAAABiiaAQAAYICiGQAAAAYomgEAAGCAohkAAAAGKJoBAABggKIZAAAABiiaAQAAYICiGQAAAAYomgEAAGCAohkAAAAGKJoBAABggKIZAAAABiiaAQAAYICiGQAAAAYomgEAAGCAohkAAAAGKJoBAABggKIZAAAABiiaAQAAYICiGQAAAAYomgEAAGCAohkAAAAGKJoBAABggKIZAAAABiiaAQAAYICiGQAAAAYomgEAAGCAohkAAAAGKJoBAABggKIZAAAABiiaAQAAYMCCiuaq2q+qzq6qc6rqeWuYfv2qOqqffnxV7bbYGwoAAAAb21qL5qraOslhSR6aZPckj6+q3adme2qSy1prt0vyuiSvXuwNBQAAgI1tIS3N90pyTmvt3NbalUmOTHLA1DwHJHlPP/zhJPtWVS3eZgIAAMDGV621+WeoenSS/VprT+uf/3mSvVtrz5iY57R+nov659/t5/nJ3DyrV6+ePwgAAABmaNmyZddp/NURGAAAAAxYSNH8/SS7TDzfuR+3xnmqapsky5JcuhgbCAAAALOyzQLmOTHJiqq6Tbri+HFJnjA1z9FJnpzk60keneTzbeq67zU1cwMAAMCmbK1Fc2vtqqp6RpJPJ9k6ybtaa6dX1aFJTmqtHZ3knUmOqKpzkvw0XWENAAAAm7W1dgQGAAAAS5WOwHpVdceq2reqtpsav9/Iufeqqnv2w7tX1XOq6mFjZq5hG967MfP6zPv3+/pHI2bsXVU36YdvWFUvqaqPVdWrq2rZSJnPrKpd1j7nomZuW1VPqqoH9c+fUFVvqqq/qarrjZz9e1X191X1hqp6bVX91dwxB4AtRVXtOOtt2FiqavtZbwNsajarormqnjLSep+Z5KNJDk5yWlVNfg/1K8bI7HNfnOTfkrylql6Z5E1JbpzkeVX1gpEyj556fCzJ/5l7PkZmn3vCxPBB6fb1d5K8uKqeN1Lsu5Jc0Q+/IV0Hda/uxx0+UuZLkxxfVV+pqv9bVb87Us6kw5M8PMmzquqIJI9JcnySeyZ5x1ih/e/NW5PcoM+6froOAY+rqn3GymVpcILK5qKqllXVq6rqrKr6aVVdWlVn9uOWz2B7Pjnium9SVa+sqiOq6glT0948UuZOVfWWqjqsqravqkOq6tSq+mBV3WKkzJtNPbZPckJV3bSqbjZGZp+738Twsqp6Z1WdUlXvr6qbj5T5qqraoR/eq6rOTXcec0FVPXCkzG9W1Qur6rZjrH+e3L2q6gtV9b6q2qWqPlNVq6vqxKrac6TM7arq0Ko6vc+6pKqOq6oDx8ibyN2mqp5eVZ/q30OnVNUn+8aNURtUBrbn30da79b9fr60qu43Ne2FixrWWttsHkm+N9J6T02yXT+8W5KTkjyrf37yiPtzarr7xG+U5H+T3KQff8Mkp4yU+c0k70uyT5IH9j9/2A8/cMR9PXli+MQkv9sP3zjJqSNlnjm531PTvjXWfqb7MOqP0t3rf0mST6XrKO93Rso8pf+5TZKLk2zdP6+x3kf9+k+dyLpRki/2w7ce+fdmWZJXJTkrXR8KlyY5sx+3fKzcebbnkyOt9yZJXpnkiCRPmJr25hH3Z6ckb0lyWJLtkxzSv9YfTHKLkTJvNvXYPsn5SW6a5GYjZe439Z56Z5JTkrw/yc1HPL6vSrJDP7xXknOTnJPkgrH+Bvd/91+Y5LZj7ddA7l5JvtD/z9klyWeSrO7/B+w5UuZ2SQ5NcnqfdUmS45IcOOJ+fjrJPyTZaWLcTv24Y0fKvPvA4x5Jfjjivv5n/x5+ZLpOYP8zyfXn3mcjZX4qXaPG8/rf0X/o308HJ/noSJnXJDlv6vHr/ue5Ix7fb04MvyPJy5LsmuTZST4yUuapE8NfSHLPfvj26fouGiPzvCT/kuR7SU7o9++WYx3XidwTkjw0yeOTXJjk0f34fZN8faTMjyY5MN23Dz0nyT8lWZHkPUleMeK+fiDd//J799k798NvSXLUSJnT/8sn/6dfNFLmO9L93/7bJN9I8tqJaYv6N2nUN+d67vwpA49Tk/xqpMzTp55v1/+Rfm1GKq76nJPXNNw/H6uo26r/4/SZJHv040b7BzCR++10J8DbT/8Rnt73Rcz8UJKn9MOHJ9mrH759khNHypwuzq+XZP/+j9clI2WelmTb/vj+LH2Rka4F+MwxMvv1n5prT5ZuOvm6JjltxNwlcYKaGZyc9uteEieomcHJaZ/lBHULO0FNcvb6TNvAzKuTfL5/D00/fjHia/qtqecvSPK1dP/bxyqaJ8+Vvjff9ixi5t/1fwvvOjHuvLGO60TG5N+l6WM91r6emWSbfvi4qWljNWpM7uf/l+TNSX7Uv3//csTjO997aaxz0W9PPT+x/7lVkrNG3NfvrM+0Dcy8Ot0HwZP/y+eeXzlS5ikTw9sk+fck/5Xu6sdFfU1HeaE2cOcvTrJHf/Iy+dgtyQ9Gyvx8+gJy6sC/N8nVI+7r8Ulu1A9vNTF+2Vj/fCYydk5XVL5p+g/HSHnnT/zinJu+xSrdBxRj/SNYluTdSQi6UusAAAqTSURBVL7bH+tf99lfSvL7I2UO/oLOvdYjZD67368LkjwzyeeSvD1dUfviEV/TZ6Urqt6ertV37gOK303y5RFzl8QJ6vTvRTbCyWmfsyROUDODk9N+3U5Q2/x/Kzcwc6OfoCY5NslzM3GFQpKbp/vA6bMjZZ6WZMXAtAtHfE3PzMT5Sj/uwHQt+xeM/ZomednUtFF+Z/p1z50nvTbd7WQbo4HhonQf9vxd/3+9JqaNdQXiwf17+A/TXVn0hnRXH74kyREjZV7nf1i6Ky/3S3L4iMf36+muBHxMunOmR/bjH5jxPrT8nyT374f3T/LpiWmjnLP06z6u38/J+mKrJI9NcvxImSuT3Hpg2ih/l9b0dz3Ji9OdL61czKyFfE/zxvbxdJdKf2t6QlV9caTMJyW5anJEa+2qJE+qqreNlJkkD2it/arPu2Zi/PXSXc47mtbaRUkeU1UPT3dp+Khaa7sNTLomyaNGylyd5MC+Y6rbpPsg5KLW2sVj5PUeO8/2XDE0bUO01l5XVUf1wz+ormO3ByV5e2vthPmX3qDcN1TVZ5PcKcm/ttbO6sdfkuQBY+UmuaCqnpvkPXOvZX+v14HpWrPGcGaSp7fWVk5PqKqxMq9fVVvN/W1orb28qr6f5MvpPmway2RfF9OdBG49RmBr7V/79/Dr+uP54iRtjKwJO1bVc9LdxnCTqqrW/7fNuP19vDnJMVX1qiSfqqo3pPtU/A+TXOf/3mJrrX0lyVeq6uAkD073N2uUe82S/LK6zh6XJWlV9cjW2kf6+ySvHinz51V1/9baV6tq/3S3cKS1dk1V1UiZj013ZcaX+r9FLV0DwNFJ/nSkzEMy/D49eKTMJPlYuvfqZ+dGtNbeXVU/SvLGkTI/WlXbtdYub6395h7FqrpdkrNHypw8T9o/3dV5Nxora8Lb0xXoSXd1xA5JLqmqnTLS34fW2hur6tQkf53uipdt0l2d8ZF0V+CM4Ttr2I6r0314+qmRMpPkr5K8Jt2550OS/HVVvTvJ95McNFLmXyd5e1WtSPfh0lOTpO/z5rCRMpPu639fneSwqlrVj1ue7sPSsb4a+PXprjz83hqmvWakzJOqar/W2m/eN621l/TnS29ZzCBfOQVsVqrqpulOUA9IMtdZ1NwJ6qtaa5eNkPnodC0a1zlBmysERsh8TbrLzT87NX6/JG9sra1Y7Mx+/YcmeU1r7fKp8bdLd3wfPUbuRM7+Sf4xyW6ttZ1GzHnx1Kg3t9bmTk5f01p70ojZ++S3T1AvTHeC+q7+A9vFzjuytTbWSdJ8ub+fa09Qn51un5+c/gS1tfY/I2TeLd3l9nMnqH/RWvtOf4L6+Nbavy12Zp97x3Qtk8dN/u5Mn8yNkHmrdK1GGyVzLbkPba2N0gnZLPZ1MjPdhzy3ba2dNsPju0W9l2b4/r1TkltuzNw+81bZiH8f+vXvne5DvO8muWOS+yQ5o7V2zIiZ90rSWmsnVtXu6a4eOGuLyByjqdzDw8NjFo/0l4jL3Lxz03WGeBfHd8vM3NL2Nd1tMWen++Dj/CQHTEwb6z7fjZ7Zr/vgGezrLDKX0vGdxft3o+/nxL6eNYPju1Ez+3W/ON0l2iel61T0c+n6ePhykhdspMzPb0mZo7xQHh4eHrN4ZCPcn79UM5fSvjq+W2buWJmZwTdwzCJzKe2r47vlZS7Rfd3Y39CzRWduivc0AwyqqlOGJqXrfEfmZpa7VDJnlWtfx81M19HO5UnSWju/v/z+w1W1a5+7pWTOKnepZM4qd6lkzip3Vvt6VevuE7+iqr7bWvvffht+UVXXrGVZmWugaAY2NzdP14HH9L3Lla6XSpmbX+5SyZxVrn0dN/Piqtqj9R2YttYur6pHJHlXkrtuQZmzyl0qmbPKXSqZs8qd1b5eWVU3al0ntPeYG1lVy9L1MyFzHSmagc3NLHrYXyqZs8pdKpmzyrWv42bO4hs4ZvWtH0tlXx3fLS9zVrlL6Rt6tuhMvWcDAADAgDG/ixIAAAA2a4pmAAAAGKBoBgAAgAGKZgCYUlUnVNXtq+r3quqba5m3quqZVXVaVf28qi6qqg9V1Zg9o24yqmq3qmpVpXNRALZIimYAmFBV10uya5KV6b7CYt6iOckbkjwryTOT3CzJ7ZN8JMnDR9xMAGAjUTQDwG+7S5IzWvf1EntlnqK5qlYk+Zskj2+tfb619qvW2hWttf9orb2qn2dZVb23qi6pqguq6oVVtVU/7cCq+lpVva6qVlXVuVV13378hVX146p68kTeu6vqrVX1mar6WVV9qap2nZh+36o6sapW9z/vOzHti1X10j7vZ1V1bFXtMDH93lX1P/12fLuq9lngsl/uf66qqsur6j5Vdbt+21ZX1U+q6qj1fzkAYLYUzQCQpKqeUlWrknwtyX364b9L8uq+kLzNGhbbN8lFrbUT5ln1G5MsS/J7SR6Y7ns7nzIxfe8kpyTZPsn7kxyZ5J5JbpfkiUneVFXbTcz/Z0lemmSHJN9K8h/99t8sySeS/Fu/rtcm+URVbT+x7BP67B2TbJvk7/tlb9Uv+7J0reV/n+Q/q+p317Zskgf0P5e31rZrrX29375jk9w0yc79MQCAzZKiGQCStNYOb60tT/KNJPdOcrckpyW5SWtteWvtvDUstn2SHw6ts6q2TvK4JM9vrf2stXZ+kn9N8ucTs53XZ1+d5KgkuyQ5tG+1PjbJlekK6DmfaK19ubX2qyQvSFfg75LucvCVrbUjWmtXtdY+kOSsJH88sezhrbXvtNZ+keSDSfboxz8xyTGttWNaa9e01j6T5KQkD1vAsmvy63SXuN+ytfbL1tpX55kXADZpimYAlryqulnfmrw6yX2TfDHJ2UnukOSyqvrbgUUvTXKLeVa9Q5LrJblgYtwFSW418fziieFfJElrbXrcZEvzhXMDrbXLk/w0yS37x2TOmrJ+NDF8xcR6d03ymP4YrOpb2e8/tW9Dy67Jc5NUkhOq6vSq+ot55gWATZqiGYAlr7X2076V+elJ3tEPfyrJH/etzK8fWPRzSXauqr0Gpv8k17a6zrl1ku9vwObuMjfQX7Z9syQ/6B+7Ts270KwLkxzR7+vc48Zz92WvRbvOiNZ+1Fo7qLV2y3TH9M1VdbvrLgoAmz5FMwBca7K37D3TXao9qLW2Msmbk3ygqvapqm2r6gZV9biqel5/yfUHk7y8qn6n77TrOUnetwHb+LCqun9VbZvu3uHjWmsXJjkmye2r6glVtU1VPTbJ7kk+voB1vi/JH1fVQ6pq634f9qmqnRew7CVJrkl3z3aSpKoeM7HsZekK62sWvosAsOlQNAPAte6R5Jt951lXt9YuW8Ayz0zypiSHJVmV5LtJHpXkY/30g5P8PMm5Sb6arrOvd23ANr4/yYvTXZZ9j3T3I6e1dmmSR6TrvOzSdJdIP6K19pO1rbAvug9I8o/piuALk/y/LOA8obV2RZKXJ/laf2n3vdN1ZHZ8VV2e5Ogkz2qtnbuO+wkAm4TqvlEDANjUVdW70/XW/cJZbwsALBVamgEAAGCAohkAAAAGuDwbAAAABmhpBgAAgAGKZgAAABigaAYAAIABimYAAAAYoGgGAACAAYpmAAAAGPD/A78ScI2Y4K79AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.neighbors import NearestCentroid\n",
    "\n",
    "scores = []\n",
    "\n",
    "for n_components in range(1, 33, 1):\n",
    "    \n",
    "    scaler = StandardScaler(with_std=False)\n",
    "    embedder = PCA(n_components=n_components)\n",
    "    \n",
    "    x_train_scaled = scaler.fit_transform(x_train)\n",
    "    x_test_scaled = scaler.transform(x_test)\n",
    "    \n",
    "    clf = NearestCentroid(shrink_threshold=0.01)\n",
    "\n",
    "    embedder.fit(x_train_scaled, y_train)\n",
    "    x_train_embed = embedder.transform(x_train_scaled)\n",
    "    x_test_embed = embedder.transform(x_test_scaled)\n",
    "\n",
    "    clf.fit(x_train_embed, y_train)\n",
    "\n",
    "    y_test_pred = clf.predict(x_test_embed)\n",
    "\n",
    "    scores.append([n_components, accuracy_score(y_test, y_test_pred)])\n",
    "    \n",
    "\n",
    "fig, ax = plt.subplots(1, 1, figsize=(15, 5))\n",
    "\n",
    "pd.DataFrame(\n",
    "    scores,\n",
    "    columns=['# Components', 'Accuracy']\n",
    ").set_index(\n",
    "    '# Components'\n",
    ")['Accuracy'].plot(\n",
    "    title='{}: Accuracy vs # Components'.format(str(embedder).split('(')[0]),\n",
    "    kind='bar',\n",
    "    color='k',\n",
    "    ax=ax\n",
    ")\n",
    "\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.decomposition import PCA\n",
    "\n",
    "scaler = StandardScaler(with_std=False)\n",
    "\n",
    "pca = PCA()\n",
    "\n",
    "x_train_scaled = scaler.fit_transform(x_train)\n",
    "pca.fit(x_train_scaled)\n",
    "\n",
    "df_explained_variance_ratio = pd.DataFrame(\n",
    "    [\n",
    "        (component, explained_variance_ratio) \n",
    "        for component, explained_variance_ratio in enumerate(pca.explained_variance_ratio_[:32], 1)\n",
    "    ],\n",
    "    columns=['component', 'explained_variance_ratio']\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:10: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n",
      "  # Remove the CWD from sys.path while we load stuff.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 1, figsize=(14, 5))\n",
    "\n",
    "df_explained_variance_ratio.set_index('component')['explained_variance_ratio'].plot(\n",
    "    title='Explained Variance Ratio',\n",
    "    kind='bar',\n",
    "    color='k',\n",
    "    ax=ax\n",
    ")\n",
    "\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "embedder = PCA(n_components=50)\n",
    "embedder.fit(x_train, y_train)\n",
    "\n",
    "x_train_embed = embedder.transform(x_train_scaled)\n",
    "x_test_embed = embedder.transform(x_test_scaled)\n",
    "\n",
    "# from sklearn.preprocessing import MinMaxScaler\n",
    "\n",
    "iscaler = MinMaxScaler((x_train.min(), x_train.max()))\n",
    "\n",
    "x_train_restored = embedder.inverse_transform(x_train_embed) \n",
    "x_test_restored = embedder.inverse_transform(x_test_embed)\n",
    "\n",
    "x_train_restored = iscaler.fit_transform(x_train_restored) \n",
    "x_test_restored = iscaler.fit_transform(x_test_restored)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 5., ..., 0., 0., 0.],\n",
       "       [0., 0., 4., ..., 1., 0., 0.],\n",
       "       [0., 0., 7., ..., 0., 0., 0.],\n",
       "       ...,\n",
       "       [0., 0., 9., ..., 1., 0., 0.],\n",
       "       [0., 0., 9., ..., 0., 0., 0.],\n",
       "       [0., 0., 4., ..., 8., 0., 0.]])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[7.34089598e+00, 9.81058989e-01, 5.01019546e+00, ...,\n",
       "        9.07348237e-03, 1.95406285e-02, 2.75549927e-01],\n",
       "       [8.55425780e+00, 6.82726678e-01, 4.01377367e+00, ...,\n",
       "        1.00790631e+00, 1.84054665e-02, 2.77155972e-01],\n",
       "       [8.51166507e+00, 1.07475782e+00, 7.00473765e+00, ...,\n",
       "        9.46089545e-03, 1.73866306e-02, 2.80135213e-01],\n",
       "       ...,\n",
       "       [7.45719606e+00, 9.63168040e-01, 9.00129304e+00, ...,\n",
       "        1.00825073e+00, 1.73951549e-02, 2.81813922e-01],\n",
       "       [1.34388829e+01, 6.89473169e-01, 9.00313424e+00, ...,\n",
       "        8.74392946e-03, 1.54501763e-02, 2.87731379e-01],\n",
       "       [9.22089705e+00, 8.26351949e-01, 4.01248910e+00, ...,\n",
       "        8.00162751e+00, 1.75610503e-02, 2.80916811e-01]])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train_restored"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:16: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n",
      "  app.launch_new_instance()\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x360 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import random \n",
    "\n",
    "fig, axs = plt.subplots(2, 8, figsize=(14, 5))\n",
    "\n",
    "for i in range(8):\n",
    "    \n",
    "    rand = random.choice(range(y_train.shape[0]))\n",
    "\n",
    "    img_orig = x_train[rand]\n",
    "    img_comp = x_train_restored[rand]\n",
    "    \n",
    "    display_img(img_orig, y_train[rand], axs[0][i])\n",
    "    display_img(img_comp, y_train[rand], axs[1][i])\n",
    "\n",
    "\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MNIST test accuracy score: 98.9%\n",
      "{'metric': 'euclidean', 'n_neighbors': 5}\n"
     ]
    }
   ],
   "source": [
    "parameters = {'metric':('manhattan','euclidean'), 'n_neighbors': range(2, 22)}\n",
    "\n",
    "knn = KNeighborsClassifier()\n",
    "clf = GridSearchCV(knn, param_grid=parameters, scoring='accuracy', cv=5)\n",
    "\n",
    "clf.fit(x_train, y_train)\n",
    "\n",
    "y_test_pred = clf.predict(x_test)\n",
    "\n",
    "print(\n",
    "    'MNIST test accuracy score: {:.1%}'.format(\n",
    "        accuracy_score(y_test, y_test_pred), \n",
    "    )\n",
    "\n",
    ")\n",
    "print(clf.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MNIST test accuracy score: 98.9%\n",
      "{'metric': 'euclidean', 'n_neighbors': 5}\n"
     ]
    }
   ],
   "source": [
    "parameters = {'metric':('manhattan','euclidean'), 'n_neighbors': range(5, 22)}\n",
    "\n",
    "knn = KNeighborsClassifier()\n",
    "clf = GridSearchCV(knn, param_grid=parameters, scoring='accuracy', cv=5)\n",
    "\n",
    "clf.fit(x_train_restored, y_train)\n",
    "\n",
    "y_test_pred = clf.predict(x_test_restored)\n",
    "\n",
    "print(\n",
    "    'MNIST test accuracy score: {:.1%}'.format(\n",
    "        accuracy_score(y_test, y_test_pred), \n",
    "    )\n",
    ")\n",
    "print(clf.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MNIST test accuracy score: 98.9%\n",
      "{'metric': 'euclidean', 'n_neighbors': 5}\n"
     ]
    }
   ],
   "source": [
    "x_train_expanded = np.concatenate([x_train, x_train_restored])\n",
    "y_train_expanded = np.concatenate([y_train, y_train])\n",
    "\n",
    "parameters = {'metric':('manhattan','euclidean'), 'n_neighbors': range(5, 22)}\n",
    "\n",
    "knn = KNeighborsClassifier()\n",
    "clf = GridSearchCV(knn, param_grid=parameters, scoring='accuracy', cv=5)\n",
    "\n",
    "clf.fit(x_train_expanded, y_train_expanded)\n",
    "\n",
    "y_test_pred = clf.predict(x_test)\n",
    "\n",
    "print(\n",
    "    'MNIST test accuracy score: {:.1%}'.format(\n",
    "        accuracy_score(y_test, y_test_pred), \n",
    "    )\n",
    ")\n",
    "print(clf.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MNIST test accuracy score: 93.6% @ n_components=5\n",
      "MNIST test accuracy score: 97.8% @ n_components=10\n",
      "MNIST test accuracy score: 98.9% @ n_components=15\n",
      "MNIST test accuracy score: 98.7% @ n_components=20\n",
      "MNIST test accuracy score: 98.7% @ n_components=25\n",
      "MNIST test accuracy score: 98.9% @ n_components=30\n",
      "MNIST test accuracy score: 98.9% @ n_components=35\n",
      "MNIST test accuracy score: 98.9% @ n_components=40\n"
     ]
    }
   ],
   "source": [
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "accuracies = []\n",
    "\n",
    "for n_components in range(1, 45, 1):\n",
    "    \n",
    "    embedder = PCA(n_components=n_components)\n",
    "    embedder.fit(x_train, y_train)\n",
    "\n",
    "    x_train_embed = embedder.transform(x_train_scaled)\n",
    "    x_test_embed = embedder.transform(x_test_scaled)\n",
    "\n",
    "    knn = KNeighborsClassifier(metric='euclidean', n_neighbors=5)\n",
    "    \n",
    "#     scaler = MinMaxScaler()\n",
    "#     clf = LogisticRegression(max_iter=1000)\n",
    "\n",
    "#     x_train_scaled2 = scaler.fit_transform(x_train_embed)\n",
    "#     x_test_scaled2 = scaler.transform(x_test_embed)\n",
    "    \n",
    "    knn.fit(x_train_embed, y_train)\n",
    "    y_test_pred = knn.predict(x_test_embed)\n",
    "\n",
    "    accuracies.append([n_components, accuracy_score(y_test, y_test_pred)])\n",
    "    if n_components % 5 != 0:\n",
    "        continue\n",
    "    print(\n",
    "        'MNIST test accuracy score: {:.1%} @ n_components={}'.format(\n",
    "            accuracy_score(y_test, y_test_pred), \n",
    "            n_components,\n",
    "    )\n",
    ")\n",
    "    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_accuracies = pd.DataFrame(\n",
    "    accuracies,\n",
    "    columns=['n_components', 'accuracy_score']\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_accuracies = df_accuracies.sort_values(\n",
    "    'accuracy_score', ascending=False\n",
    ")\n",
    "\n",
    "df_accuracies['top_score'] = 1\n",
    "df_accuracies['top_score'] = df_accuracies['top_score'].cumsum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>n_components</th>\n",
       "      <th>accuracy_score</th>\n",
       "      <th>top_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19</td>\n",
       "      <td>0.991111</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>44</td>\n",
       "      <td>0.988889</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>35</td>\n",
       "      <td>0.988889</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>27</td>\n",
       "      <td>0.988889</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    n_components  accuracy_score  top_score\n",
       "18            19        0.991111          1\n",
       "43            44        0.988889          2\n",
       "34            35        0.988889          3\n",
       "26            27        0.988889          4"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_accuracies.sort_values(\n",
    "    'top_score', ascending=True\n",
    ").head(4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_accuracies = df_accuracies.sort_values(\n",
    "    'n_components', ascending=True\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/tarek/anaconda3/envs/scikitbook/lib/python3.6/site-packages/ipykernel_launcher.py:19: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 1, figsize=(14, 5))\n",
    "\n",
    "df_accuracies.set_index('n_components')['accuracy_score'].plot(\n",
    "    title='Accuracy vs # PCA Components used',\n",
    "    kind='bar',\n",
    "    alpha=0.45,\n",
    "    color='k',\n",
    "    ax=ax\n",
    ")\n",
    "\n",
    "for bar in [\n",
    "        shape for shape, score in zip(\n",
    "            [child for child in ax.get_children() if isinstance(child, matplotlib.patches.Rectangle)],\n",
    "            [ts <= 10 for ts in df_accuracies['top_score'].tolist()]\n",
    "        ) if score\n",
    "    ]:\n",
    "        bar.set_alpha(0.99)\n",
    "        \n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
